package com.zsrt.java.day20161229.zp;

import java.util.Scanner;

import org.junit.Test;

/**
 * 1： 从键盘输入1个3位数的整数   例：456
 * 2： 根据 最后1位数 6 跟  4 求摸
 *		1    +    加法：4+5+5=14
 *		2    -    4-5-6=-7
 *		3    *   
 *		4    /
 *
 * 3：加减乘除都要封装到方法中add(int a,int b ,int c) ...
 * 4：游戏可以玩多次   而且可以退出
 * 5：用junit4测试
 * 6：玩之前输入用户名和密码 如果用户名等于密码 正确
 *@author zsrt
 */

public class NumberGame {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入用户名和密码：");
		
		String username = sc.next();
		String password = sc.next();
		
		if(username.equals(password)){
			System.out.println("用户名和密码正确，欢迎！");
			
			System.out.println("请输入1个3位数的整数：");
			int num = sc.nextInt();
			if(num>999 || num<100){
				System.out.println("很抱歉，你的输入有误！");
			}else if(num>=100 || num<=999){
				game(num);
			}else{
				System.out.println("很抱歉，你的输入有误！");
			}
		}else{
			System.out.println("很抱歉，用户名和密码错误！");
			sc.close();
		}
		
	}
	
	/**
	 * 数字游戏的方法
	 * @param inputNum  3位数的整数
	 */
	@Test
	public static void game(int inputNum){
		
		int baiwei = inputNum/100;
		int shiwei = inputNum%100/10;
		int gewei = inputNum%100%10;
		int jgNum;
		double doubleNum;
		
		int operand = gewei%4;
		
		if(operand ==1){
			jgNum = add(baiwei,shiwei,gewei);
			System.out.println("因为你输入数个位上的数为"+gewei+",且"+gewei+"%4等于1，所以进行如下运算：");
			System.out.println(baiwei+"+"+shiwei+"+"+gewei+"="+jgNum);
			goOn();
		}else if(operand ==2){
			jgNum = sub(baiwei,shiwei,gewei);
			System.out.println("因为你输入数个位上的数为"+gewei+",且"+gewei+"%4等于2，所以进行如下运算：");
			System.out.println(baiwei+"-"+shiwei+"-"+gewei+"="+jgNum);
			goOn();
		}else if(operand ==3){
			jgNum = mul(baiwei,shiwei,gewei);
			System.out.println("因为你输入数个位上的数为"+gewei+",且"+gewei+"%4等于3，所以进行如下运算：");
			System.out.println(baiwei+"*"+shiwei+"*"+gewei+"="+jgNum);
			goOn();
		}else if(operand ==4){
			doubleNum = div(baiwei,shiwei,gewei);
			System.out.println("因为你输入数个位上的数为"+gewei+",且"+gewei+"%4等于4，所以进行如下运算：");
			System.out.println(baiwei+"/"+shiwei+"/"+gewei+"="+doubleNum);
			goOn();
		}else if(operand ==0){
			jgNum = mod(baiwei,shiwei,gewei);
			System.out.println("因为你输入数个位上的数为"+gewei+",且"+gewei+"%4等于4，所以进行如下运算：");
			System.out.println(baiwei+"%"+shiwei+"%"+gewei+"="+jgNum);
			goOn();
		}
		
	}
	
	/**
	 * 加法
	 * @param bai 获取百位上的数
	 * @param shi 获取十位上的数
	 * @param ge  获取个位上的数
	 * @return
	 */
	public static int add(int bai,int shi,int ge){
		
		int addNum = bai+shi+ge;
		return addNum;
	}
	
	/**
	 * 减法
	 * @param bai 获取百位上的数
	 * @param shi 获取十位上的数
	 * @param ge  获取个位上的数
	 * @return
	 */
	public static int sub(int bai,int shi,int ge){
		
		int subNum = bai-shi-ge;
		return subNum;
	}
	
	/**
	 * 乘法
	 * @param bai 获取百位上的数
	 * @param shi 获取十位上的数
	 * @param ge  获取个位上的数
	 * @return
	 */
	public static int mul(int bai,int shi,int ge){
		
		int mulNum = bai*shi*ge;
		return mulNum;
	}
	
	/**
	 * 除法
	 * @param bai 获取百位上的数
	 * @param shi 获取十位上的数
	 * @param ge  获取个位上的数
	 * @return
	 */
	public static double div(int bai,int shi,int ge){
		
		if(ge ==0){
			return 0;
		}
		double doubleNum = bai/shi/ge;
		return doubleNum;
	}
	
	/**
	 * 求模的方法
	 * @param bai 获取百位上的数
	 * @param shi 获取十位上的数
	 * @param ge  获取个位上的数
	 * @return
	 */
	public static int mod(int bai,int shi,int ge){
		if(ge ==0){
			return 0;
		}
		int modNum = bai%shi%ge;
		return modNum;
	}
	
	/**
	 * 判断是否继续游戏
	 */
	public static void goOn(){
		Scanner sc2 =new Scanner(System.in);
		System.out.println("Game over , are you sure to play again?  y/n");
		String answer = sc2.next();
		
		if(answer.equals("y")){
			System.out.println("请输入1个3位数的整数：");
			int num = sc2.nextInt();
			game(num);
		}else if(answer.equals("n")){
			System.out.println("已成功退出！");
			sc2.close();
		}
	}
	
}
